package com.zhangshanfeng.test;

import java.util.*;
import java.util.stream.Stream;

/*
- Stream流的三类方法

  - 获取Stream流
    - 创建一条流水线,并把数据放到流水线上准备进行操作
  - 中间方法
    - 流水线上的操作
    - 一次操作完毕之后,还可以继续进行其他操作
  - 终结方法
    - 一个Stream流只能有一个终结方法
    - 是流水线上的最后一个操作

- 生成Stream流的方式

  - Collection体系集合

    使用默认方法stream()生成流， default Stream<E> stream()

  - Map体系集合

    把Map转成Set集合，间接的生成流

  - 数组

    通过Arrays中的静态方法stream生成流

  - 同种数据类型的多个数据

    通过Stream接口的静态方法of(T... values)生成流
 */
public class MyStream02 {
    public static void main(String[] args) {
        //Collection(单列)体系的集合可以使用默认方法stream()生成流
        List<String> list = new ArrayList<String>();
        Stream<String> listStream = list.stream();

        Set<String> set = new HashSet<>();
        Stream<String> setStream = set.stream();

        //Map体系的集合间接的生成流
        Map<String,Integer> map = new HashMap<>();
        //键
        Stream<String> keyStream = map.keySet().stream();
        //值
        Stream<Integer> valueStream = map.values().stream();
        //键值
        Stream<Map.Entry<String,Integer>> entryStream = map.entrySet().stream();


        //数组可以通过Arrays中的静态方法stream生成流
        String[] arr = {"张三","李四","王五"};
        Stream<String> stream = Arrays.stream(arr);

        //同种数据类型的多个数据可以通过Stream接口的
        // 静态方法of(T... values)生成流

        Stream<String> strArrayStream = Stream.of("我是","渣渣辉","流");
        Stream<Integer> integerStream = Stream.of(1,2,3);



    }
}
